From cbc5d3e33d0b7a924c9eab7e8908f2d68fc8afd3 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 2 Nov 2008 05:01:23 +0000 Subject: [PATCH] Make it possible to overrule the gtk-menu-images setting. 2008-11-02 Matthias Clasen * gtk/gtkimagemenuitem.c: Make it possible to overrule the gtk-menu-images setting. * gtk/gtkaction.c (connect_proxy): Show the image before adding it to the image menu item. svn path=/trunk/; revision=21751 --- ChangeLog | 8 ++++++++ gtk/gtkaction.c | 2 +- gtk/gtkimagemenuitem.c | 28 ++++++++++++++++++++-------- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index d4a1650a71..09085d50dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-11-02 Matthias Clasen + + * gtk/gtkimagemenuitem.c: Make it possible to overrule the + gtk-menu-images setting. + + * gtk/gtkaction.c (connect_proxy): Show the image before adding + it to the image menu item. + 2008-11-01 Tor Lillqvist Bug 558278 - Crash when calling a callback set by diff --git a/gtk/gtkaction.c b/gtk/gtkaction.c index 1f7a2feef0..7907606d93 100644 --- a/gtk/gtkaction.c +++ b/gtk/gtkaction.c @@ -749,9 +749,9 @@ connect_proxy (GtkAction *action, if (!image) { image = gtk_image_new (); + gtk_widget_show (image); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (proxy), image); - gtk_widget_show (image); } if (action->private_data->stock_id && diff --git a/gtk/gtkimagemenuitem.c b/gtk/gtkimagemenuitem.c index 6d97a28609..661760157b 100644 --- a/gtk/gtkimagemenuitem.c +++ b/gtk/gtkimagemenuitem.c @@ -42,6 +42,7 @@ static void gtk_image_menu_item_size_request (GtkWidget *widget, GtkRequisition *requisition); static void gtk_image_menu_item_size_allocate (GtkWidget *widget, GtkAllocation *allocation); +static void gtk_image_menu_item_map (GtkWidget *widget); static void gtk_image_menu_item_remove (GtkContainer *container, GtkWidget *child); static void gtk_image_menu_item_toggle_size_request (GtkMenuItem *menu_item, @@ -85,6 +86,7 @@ gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass) widget_class->screen_changed = gtk_image_menu_item_screen_changed; widget_class->size_request = gtk_image_menu_item_size_request; widget_class->size_allocate = gtk_image_menu_item_size_allocate; + widget_class->map = gtk_image_menu_item_map; container_class->forall = gtk_image_menu_item_forall; container_class->remove = gtk_image_menu_item_remove; @@ -171,6 +173,19 @@ show_image (GtkImageMenuItem *image_menu_item) return show; } +static void +gtk_image_menu_item_map (GtkWidget *widget) +{ + GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (widget); + + GTK_WIDGET_CLASS (gtk_image_menu_item_parent_class)->map (widget); + + if (image_menu_item->image) + g_object_set (image_menu_item->image, + "visible", show_image (image_menu_item), + NULL); +} + static void gtk_image_menu_item_destroy (GtkObject *object) { @@ -197,7 +212,7 @@ gtk_image_menu_item_toggle_size_request (GtkMenuItem *menu_item, *requisition = 0; - if (image_menu_item->image && show_image (image_menu_item)) + if (image_menu_item->image && GTK_WIDGET_VISIBLE (image_menu_item->image)) { GtkRequisition image_requisition; guint toggle_spacing; @@ -237,10 +252,8 @@ gtk_image_menu_item_size_request (GtkWidget *widget, pack_dir = GTK_PACK_DIRECTION_LTR; image_menu_item = GTK_IMAGE_MENU_ITEM (widget); - - if (image_menu_item->image && - GTK_WIDGET_VISIBLE (image_menu_item->image) && - show_image (image_menu_item)) + + if (image_menu_item->image && GTK_WIDGET_VISIBLE (image_menu_item->image)) { GtkRequisition child_requisition; @@ -284,7 +297,7 @@ gtk_image_menu_item_size_allocate (GtkWidget *widget, GTK_WIDGET_CLASS (gtk_image_menu_item_parent_class)->size_allocate (widget, allocation); - if (image_menu_item->image && show_image (image_menu_item)) + if (image_menu_item->image && GTK_WIDGET_VISIBLE (image_menu_item->image)) { gint x, y, offset; GtkRequisition child_requisition; @@ -486,7 +499,6 @@ gtk_image_menu_item_new_from_stock (const gchar *stock_id, gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); } - gtk_widget_show (image); return item; } @@ -518,7 +530,7 @@ gtk_image_menu_item_set_image (GtkImageMenuItem *image_menu_item, return; gtk_widget_set_parent (image, GTK_WIDGET (image_menu_item)); - g_object_set (image, + g_object_set (image, "visible", show_image (image_menu_item), "no-show-all", TRUE, NULL); -- 2.30.2